package com.kaigejava.juc.queue.api;


import org.junit.Test;

import java.util.concurrent.ArrayBlockingQueue;

/**
 * @author kaigejava
 *
 * 第一组API:
 * 会抛异常的一组API
 * (少年时期，一言不合就开干) 代码演示
 * add：当队列已经满的时候，再向队列中添加元数，会抛出：ava.lang.IllegalStateException: Queue full异常
 * remove：当队列已经空的时候，再从队列中移除元素，会抛出：java.util.NoSuchElementException
 * element:检查当前队列中的队首元素。当队列为空的时候，调用此方法会抛出：java.util.NoSuchElementException 异常
 *
 */
public class ExApi {

    /**
     * 添加的时候 如果满了，在添加就会抛出异常。演示
     */
    @Test
    public  void addExTest(){
        ArrayBlockingQueue<String> abQueue = new ArrayBlockingQueue(3);
        abQueue.add("凯哥");
        System.out.println("第一个元素添加成功");
        abQueue.add("凯哥Java");
        System.out.println("第二个元素添加成功");
        abQueue.add("kaigejava");
        System.out.println("第三个元素添加成功");
      /*  System.out.printf("addex:", abQueue.add("凯哥Java(kaigejava)"));
        System.out.println("第四个元素添加成功");*/
        /**
         * 添加这个元素的时候会异常：java.lang.IllegalStateException: Queue full
         */

        /**
         * 当队列移除的时候，大于队列长度，就会抛：java.util.NoSuchElementException
         */
     /*  for (int i = 0; i <4 ; i++) {
           System.out.println("被删除的元素是:"+abQueue.remove());
       }*/

        for (int i = 0; i <3; i++) {
            System.out.println("被删除的元素是:"+abQueue.remove());;
            //java.util.NoSuchElementException
            System.out.println("当前队列的队首元素:"+abQueue.element());;
        }

    }
}
